package org.example.project.service;

import org.example.project.entity.IdentificationRecord;
import org.example.project.entity.Plant;
import org.example.project.entity.PopularScience;

import java.util.List;

/**
 * @Author 岩
 * @Package org.example.project.service
 * @Project MyApp
 * @Name PlantService
 * @Date 2024-04-28 14:22
 * @Filename PlantService
 */
public interface PlantService {
    /**
     * 获取全部植物信息
     * @return 全部植物列表
     * */
    List<Plant> getAllPlants();

    /**
     * 根据植物ID获取植物信息
     * @param plantId 植物ID
     * @return 植物信息
     * */
    Plant getPlantById(int plantId);

    /**
     * 根据名称查询植物信息
     * @param plantName 植物名称
     * @return 植物信息
     * */
    List<Plant> getPlantsByName(String plantName);

    /**
     * 新增植物信息
     * @param plant 新增植物信息
     * @return 新增植物信息
     * */
    Plant addPlant(Plant plant);

    /**
     * 删除植物信息
     * @param plantId 待删除植物ID
     * @return 删除结果
     * */
    Boolean deletePlant(int plantId);

    /**
     * 更新植物信息
     * @param plant 待更新植物信息
     * @return 更新后的植物信息
     * */
    Plant updatePlant(Plant plant);

    /**
     * 获取科普植物信息
     * @return 科普植物列表
     * */
    List<Plant> getKnowledgePlants();

    /**
     * 根据id查询科普植物信息
     * @param plantId 植物ID
     * @return 科普植物信息
     * */
    Plant getKnowledgePlantById(int plantId);

    /**
     * 根据植物名称查询科普植物信息
     * @param plantName 植物名称
     * @return 科普植物信息
     * */
    List<Plant> getKnowledgePlantsByName(String plantName);

    /**
     * 新增科普信息,即将植物信息标记为科普信息
     * @param pS 新增科普植物
     * @return 新增科普信息
     * */
    Plant addKnowledgePlant(PopularScience pS);

    /**
     * 删除科普信息
     * @param id 待删除科普ID
     * @return 删除结果
     * */
    Boolean deleteKnowledgePlant(int id);


    /**
     * 新增识别记录
     * @param pR 识别植物
     * @return 识别记录
     * */
    Plant addRecognitionRecord(IdentificationRecord pR);

    /**
    * 删除识别记录
    * @param plantId 待删除识别记录的植物ID
    * @return 删除结果
    * */
    Boolean deleteRecognitionRecord(int plantId);

    /**
     * 获取全部识别记录
     * @return 全部识别记录列表
     * */
    List<Plant> getAllRecognitionRecords();

    /**
     * 根据植物ID获取识别记录
     * @param plantId 植物ID
     * @return 识别记录
     * */
     Plant getRecognitionRecordById(int plantId);

     /**
      * 根据植物名称获取识别记录
      * @param plantName 植物名称
      * @return 识别记录
      * */
     List<Plant> getRecognitionRecordsByName(String plantName);

     /**
      * 根据用户ID获取识别记录
      * @param userId 用户ID
      * @return 识别记录
      * */
      List<Plant> getRecognitionRecordsByUserId(int userId);
}